// 数据控制器
const dbConnection = require('../utils/dbConnection');
const dbConfig = require('../config/db');

class DataController {
    // 获取所有表数据
    async getAllData(ctx) {
        try {
            const result = {
                tables: [],
                data: []
            };

            // 循环获取每个表的数据
            for (const table of dbConfig.tables) {
                try {
                    const tableDataResult = await dbConnection.getTableData(table.name);
                    result.tables.push(tableDataResult.structure);
                    result.data.push(tableDataResult.data);
                } catch (tableError) {
                    console.error(`获取表 ${table.name} 数据失败:`, tableError);
                    // 如果某个表获取失败，仍然尝试获取其他表
                    result.tables.push(table);
                    result.data.push([]);
                }
            }

            ctx.body = result;
        } catch (error) {
            console.error('获取数据失败:', error);
            ctx.status = 500;
            ctx.body = { error: '获取数据失败', message: error.message };
        }
    }

    // 获取指定表数据
    async getTableData(ctx) {
        try {
            const { tableName } = ctx.params;
            const tableDataResult = await dbConnection.getTableData(tableName);
            ctx.body = {
                structure: tableDataResult.structure,
                data: tableDataResult.data
            };
        } catch (error) {
            console.error(`获取表 ${ctx.params.tableName} 数据失败:`, error);
            ctx.status = 500;
            ctx.body = { error: '获取表数据失败', message: error.message };
        }
    }

    // 获取表结构信息
    async getTableStructure(ctx) {
        try {
            const { tableName } = ctx.params;
            const structure = dbConnection.getTableStructure(tableName);
            ctx.body = structure;
        } catch (error) {
            console.error(`获取表 ${ctx.params.tableName} 结构失败:`, error);
            ctx.status = 500;
            ctx.body = { error: '获取表结构失败', message: error.message };
        }
    }
}

module.exports = new DataController();